Add a pass to remove redundant check (select) feeding into a collective permute with cycle. #17181
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Add a pass to remove redundant check (select) feeding into a collective permute with cycle.
When collective-permute operates on a comparison to a device id and the senders match the condition's branch we can link collective-permute to the original data skipping the comparison.
For example
condition = broadcast(compare(replica_id, X), direction=EQ
data_snd = select(condition, compare_true_data, compare_false_data)
rcv = collective-permute(data_snd compare_true_data), pairs={{X,0}}
can be transformed to
rcv = collective-permute(compare_true_data), pairs={{X,0}}
The pass is only handling compare direction={EQ,NE}.
The pass handles Compare with and without preceding Broadcast.